package conservare.web;

import java.io.Serializable;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;

import conservare.modelo.Usuario;
import conservare.negocio.UsuarioRN;

@ManagedBean
@RequestScoped
public class UsuarioBean implements Serializable {

	private static final long serialVersionUID = -3764495893068615321L;
	
	private static final int LISTAGEM_USUARIO_INDEX = 0;
	private static final int NOVO_USUARIO_INDEX = 1;
	private static final int EDICAO_USUARIO_INDEX = 2;
	
	private int index;
	private Usuario usuario = new Usuario();
	private String confirmaSenha;
	private List<Usuario> usuarios;
	
	public UsuarioBean(){
		this.index = LISTAGEM_USUARIO_INDEX;
	}
	
	// methods for determining the current estado
	public boolean isEstadoListagemUsuario() { return index == LISTAGEM_USUARIO_INDEX;}
	public boolean isEstadoNovoUsuario() { return index == NOVO_USUARIO_INDEX;}
	public boolean isEstadoEdicaoUsuario() { return index == EDICAO_USUARIO_INDEX;}
	
	public void doEstadoListagemUsuario() { index = LISTAGEM_USUARIO_INDEX; }
	private void doEstadoNovoUsuario() { index = NOVO_USUARIO_INDEX; }
	private void doEstadoEdicaoUsuario() { index = EDICAO_USUARIO_INDEX; }
	
	
	public String doNovo(){
		setUsuario(new Usuario());
		doEstadoNovoUsuario();
		return null;
	}
	public String doAtivar(){
		Boolean ativo = getUsuario().getAtivo();
		if(ativo ==  null || ativo == false){
			getUsuario().setAtivo(true);
		}else{
			getUsuario().setAtivo(false);
		}
		
		UsuarioRN usuarioRN = new UsuarioRN();
		usuarioRN.salvar(getUsuario());
		
		return null;
	}
	
	public String doSalvar(){
		FacesContext context = FacesContext.getCurrentInstance();
		String senha = getUsuario().getSenha();
		if(!senha.equalsIgnoreCase(getConfirmaSenha())){
			FacesMessage message = new FacesMessage("Senha confirmada incorretamente");
			context.addMessage(null, message);
			return null;
		}
		
		UsuarioRN usuarioRN = new UsuarioRN();
		usuarioRN.salvar(getUsuario());
		
		FacesMessage message = new FacesMessage("Usuário salvo com sucesso !");
		context.addMessage(null, message);
		
		return null;
	}
	
	public String doEditar(){
		doEstadoEdicaoUsuario();
		return null;
	}
	
	public List<Usuario> getTodos() {
		if(usuarios == null){
			setUsuarios(new UsuarioRN().getTodos());
		}
		return usuarios;
	}

	public void setUsuarios(List<Usuario> usuarios) {
		this.usuarios = usuarios;
	}

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	public String getConfirmaSenha() {
		return confirmaSenha;
	}
	public void setConfirmaSenha(String confirmaSenha) {
		this.confirmaSenha = confirmaSenha;
	}
	
	
	
}
